package com.awesome.shortcutdemo;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.widget.Toast;

/**
 * Author: zhangjingfang
 * Email:zhangjingfang@jeejio.com
 * Date: 2022/5/6 2:23 下午
 * Description:类描述
 */
public class ShortcutUtil {
//    public static void addShortcut(Context context, Class targetClass, String cls, Class backClass) {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//            ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
//            if (shortcutManager.isRequestPinShortcutSupported()) {
//                Intent shortcutInfoIntent = new Intent(context, targetClass);
//                shortcutInfoIntent.setAction(Intent.ACTION_VIEW);
//                //action必须设置，不然报错
//                ShortcutInfo info = new ShortcutInfo.Builder(context, "shortId")
//                        .setIcon(Icon.createWithResource(context, R.mipmap.ic_launcher))
//                        .setShortLabel("Short Label")
//                        .setIntent(shortcutInfoIntent)
//                        .build();
//                //当添加快捷方式的确认弹框弹出来时，将被回调
//                PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, backClass), PendingIntent.FLAG_UPDATE_CURRENT);
//                shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.getIntentSender());
//            }
//        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
//            ShortcutUtils.Companion.addShortcut(context, cls);
//        } else {
//            Toast.makeText(context, "设备不支持在桌面创建快捷图标！", Toast.LENGTH_LONG).show();
//        }
//    }

    /**
     * @param context      当前content
     * @param targetClass  快捷图标打开的界面
     * @param backClass    打开后按返回键返回的界面
     * @param shortcutId   shortcut 唯一id
     * @param shortcutName   shortcut 应用名称
     * @param shortcutIcon 桌面上显示的图标
     */
    public static void addShortcut(Context context, Class targetClass, String cls, Class backClass, int shortcutId, String shortcutName, int shortcutIcon) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
            if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported()) {
                Intent shortcutInfoIntent = new Intent(context, targetClass);
                shortcutInfoIntent.setAction(Intent.ACTION_VIEW);
                ShortcutInfo info = new ShortcutInfo.Builder(context, "id" + shortcutId)
                        .setIcon(Icon.createWithResource(context, shortcutIcon))
                        .setShortLabel(shortcutName)
                        .setIntent(shortcutInfoIntent)
                        .build();
                PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast
                        (context, 0, new Intent(context, backClass), PendingIntent.FLAG_UPDATE_CURRENT);
                shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.getIntentSender());
            }
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            ShortcutUtils.INSTANCE.addShortcut(context, cls, null, shortcutName, shortcutIcon);
        } else {
            Toast.makeText(context, "设备不支持在桌面创建快捷图标！", Toast.LENGTH_LONG).show();
        }
    }


}


